package com.ruoyi.zsix.service;

import com.ruoyi.zsix.domain.model.SendActionDto;
import com.ruoyi.zsix.domain.model.TaskManageParams;
import com.ruoyi.zsix.domain.process.ProcessTask;
import com.ruoyi.zsix.domain.taskAssignee.*;

import java.util.HashMap;
import java.util.List;

public interface IProcessTaskService {
    /**
     * 获取绑定的表单
     * @param generWork
     * @return
     */
    HashMap<String, Object> getHisFormJson(GenerWork generWork);
    /**
     * 获取审核按钮
     * @param taskid
     * @return
     */
    FlowElementAttrs getElementButton(String taskid);
    /**
     * 获取待办任务
     * @param flowName
     * @return
     */
    List<GenerWork> getTodoList(String flowName);
    /**
     获取已审核任务列表
     flowSort:流程类别
     proceId:流程实例ID，类似流程编号
     */
    List<GenerWork> getHistoricTaskInstance(String flowName);
    /**
     启动流程
     processDefinitionKey:流程实例key
     instanceName：流程名称
     variables：自定义参数
     */
    SendActionDto startProcess(ProcessTask processTask);
    /**
     流程审核
     taskId：任务id
     variables：自定义参数
     */
    SendActionDto sendWork(ProcessTask processTask);
    /**
     退回
     */
    OvTaskEntity returnWork(ReturnWorkEntity returnWorkEntity);
    /**
     移交
     */
    OvTaskEntity transfer(TaskManageParams params);
    /**
     * 批量移交
     * @param param
     * @return
     */
    String transferBatch(TaskManageParams param);
    /**
     加签
     */
    OvTaskEntity countersign(TaskManageParams param);
    /**
     拒绝
     */
    OvTaskEntity refuse(TaskManageParams params);
    /**
     强制结束
     */
    TaskManageParams setEndTask(TaskManageParams params);
    /**
     * 批量结束
     * @param params
     */
    TaskManageParams setEndTaskBatch(TaskManageParams params);
    /**
     * 删除流程实例
     * @param params
     */
    OvTaskEntity deleteProcInst(TaskManageParams params);
}
